package com.ht.common.security.utils;

import com.ht.common.core.context.SecurityContextHolder;
import com.ht.common.core.domain.LoginUserEntInfo;
import com.ht.common.core.domain.LoginUserFieldInfo;
import com.ht.common.core.exception.ServiceException;

/**
 * 获取用户的相关信息
 * 通关springutil从缓存里面去加载信息
 * @author Administrator
 *
 */
public class UserInfoUtil {

	/**
     * 获取登录用户场所信息,不判断null
	 * @return
     */
	public static LoginUserFieldInfo  getFieldInfoNotCheckNull() {
		return SecurityUtils.getLoginUser().getLoginUserFieldInfo();
	}
	/**
	 * 获取登录用户场所信息,判断null
	 * @return
	 */
	public static LoginUserFieldInfo  getFieldInfoCheckNull() {
		LoginUserFieldInfo lufi=SecurityUtils.getLoginUser().getLoginUserFieldInfo();
		if(null==lufi){
			throw new ServiceException("当前用户未关联场站信息或不属于货场用户");
		}
		return lufi;
	}

	/**
	 * 是否为管理员
	 *
	 * @param userId 用户ID
	 * @return 结果
	 */
	public static boolean isAdmin(Long userId)
	{
		return userId != null && 1L == userId;
	}

	public static boolean isAdmin()
	{
		String userName=getUsername();
		return "admin".equals(userName);
	}
	/**
	 * 获取登录用户企业信息,不判断null
	 * @return
	 */
	public static LoginUserEntInfo  getEntInfoNotCheckNull() {
		return SecurityUtils.getLoginUser().getLoginUserEntInfo();
	}
	/**
	 * 获取登录用户企业信息,判断null
	 * @return
	 */
	public static LoginUserEntInfo  getEntInfoCheckNull() {
		LoginUserEntInfo entInfo=SecurityUtils.getLoginUser().getLoginUserEntInfo();
		if(null==entInfo){
			throw new ServiceException("当前用户未关联企业信息或不属于企业用户");
		}
		return entInfo;
	}

	/**
	 * 获取用户ID
	 */
	public static Long getUserId()
	{
		return SecurityContextHolder.getUserId();
	}

	/**
	 * 获取登录验证类型
	 */
	public static String getCheckType()
	{
		return SecurityContextHolder.getCheckType();
	}

	/**
	 * 获取用户名称
	 */
	public static String getUsername()
	{
		return SecurityContextHolder.getUserName();
	}
	/**
	 * 获取用户名称
	 */
	public static String getNickName()
	{
		return SecurityContextHolder.getNickName();
	}
}
